Signal Processing Operators

The twenty-one new operators for signal processing are listed in Table 2. Most of them need one or more arguments in order to be fully specified. One of the arguments--- the last, or, for the transforms, the second-to-last--- says what symbols are to be treated as variables in the function to be acted on. Thus, 30 has no effect on the expression 31, but 32 <#127#>represents<#127#> 33. An impulse train, for example, in continuous time would be written either as <#128#>Periodic[T, t][Delta[t]]<#128#> or as <#129#>Summation[n, -Infinity, Infinity, 1][Delta[t + n T]]<#129#> where <#130#>n<#130#> is an integer index variable, <#131#>T<#131#> is the sampling period, and <#132#>t<#132#> is the continuous time variable. For the transforms, the last two arguments indicate the variables before or after transformation. Other arguments are explained in the table.


<#2998#>Table<#2998#>: <#2999#>(Parameterized) Operators defined in <#199#>SignalProcessing`Support`<#199#>. For the transforms, the last two arguments indicate the variable(s) in the function to be acted on and in the result of the transformation. For all other operators except <#200#>Summation<#200#>, the last argument indicates the variable(s) in the function to be acted on.<#2999#>
CFIR[t, {h0, h1, ...}] ``all-zero'' analog filter
CIIR[t, {a0, a1, ...}] all-pole analog filter
CircularShift[n0, N, n] shifts a sequence by (n0 + n) mod N in n
CConvolve[t] continuous convolution in t
Convolve[n] discrete convolution in n
DFT[L, n, k] the L-sample discrete Fourier transform
;SPMnbsp; of a function in n to a function in k
DTFT[n, w] the discrete-time Fourier transform of a sequence
;SPMnbsp; in n to a continuous periodic function in w
Difference[i, n] the ith backward difference in n
Downsample[m, n] keep first sample in every block of m input samples;
;SPMnbsp; sampling rate decreases by a factor of m
FIR[n, {h0, h1, ...}] all-zero digital filter with finite impulse response h0, h1, ....
FT[t, w] continuous Fourier transform of a function of t into a function of w
IIR[n, {a0, a1, ...}] all-pole digital filter with infinite impulse response
Interleave[n] interleaves (combines) samples from each input function of n into one
InvDFT[L, k, n] inverse discrete Fourier transform (see DFT)
InvDTFT[w, n] inverse discrete-time Fourier transform (see DTFT)
InvFT[w, t] inverse continuous Fourier transform (see FT)
InvL[s, t] inverse Laplace transform (see L)
InvZ[z, n] inverse z-transform (see Z)
L[t, s] Laplace transform of a function of t
Periodic[p, v] argument is made periodic with period p w/r to variable v
Rev[v] reverse the function of variable v (flip the v axis)
Shift[v0, v] shift function of v by v0 points
Summation[i, ib, ie, inc] summation operator, i = ib to ie step inc
Upsample[l, n] insert l - 1 zeroes after each input sample;
;SPMnbsp; sampling rate increases by a factor of l
Z[n, z] z-transform of a function of n


For / operators, a variable is a symbol, like 34. Arguments other than variables can be numbers, symbols or expressions. By using a list of symbols in place of a variable, like 35 instead of 36, we make the operator multidimensional, the length of the list indicating the dimensionality.

For multidimensional operators, upsampling and downsampling factors become square matrices, and other parameters become lists of expressions, one expression per dimension. For example, the downsample operator requires a downsampling factor <#202#>m<#202#> and a symbolic variable <#203#>n<#203#>. In one-dimensional downsampling, <#204#>m<#204#> is an integer and <#205#>n<#205#> is a symbolic index. In the multidimensional case, <#206#>m<#206#> is a matrix and <#207#>n<#207#> is a list of symbolic indices. In either case, the form of the operator is <#208#>Downsample[m, n]<#208#>, and its syntax is <#209#>Downsample[m, n][f]<#209#>, where f is a discrete function in <#210#>n<#210#>.

It must be emphasized that when one of the operators of Table 2 is applied to a function, no evaluation takes place---~~the idea is to store the resulting function symbolically, until it becomes convenient to compute it explicitly. This is done by applying 37 to the expression, much as a numerical evaluation in <#1156#>Mathematica<#1156#> is triggered by the action of 38. Thus 39 represents the z-transform of anu[n], but the transformation is not carried out; to obtain an explicit transform one must apply 40 to the expression. (However, certain obvious simplifications are carried out: for example, 41 reduces to 42.)

Similarly, the functions of in Table 1 are not reduced to <#1157#>Mathematica<#1157#> built-in objects until they appear as arguments to 43. One may wish to reduce them, for example, in order to use <#1158#>Mathematica<#1158#>'s built-in plotting routines to plot them. Naturally, some functions in Table 1, like 44 and 45, cannot be expressed in terms of / built-in objects, so 46 leaves them alone.